package com.tedu.api.thread;

/**
 * 线程：单线程、多线程
 * 单线程：按照顺序执行线程，主方法就是线程 main
 * 多线程：创建多条线程，做不同的事情
 * 多线程并发：创建多条线程“同时”做相同的事情
 *
 * 案例:创建Chef 类 实现Runable
 *                私有属性  dishName
 *                run()功能：{提示语句：开始准备+dishName
 *                          模拟准备时间：阻塞1~3秒
 *               Math.random() 随机生成0.0到1.0浮点数值（不包含1.0）
 *                          提示语句：dishName+准备完成
 *                }
 *         主方法 实现 创建两个线程  两个   chef1【不需要lambda】
 *                                     chef2
 */
public class Kitchen {
    public static void main(String[] args) {
        //第一位厨师----西红柿
        //第二位厨师--红烧肉
    }
}

class Chef implements Runnable {
    private String dishName;  //私有属性：菜名
    //俩厨子“同时”完成菜肴制作---构造器：区分厨师制作菜肴
    public Chef(String dn) {
        this.dishName = dn;
    }
    public void run() {
        System.out.println("开始准备 " + dishName);
        //模拟厨师准备时间：1~3秒
        //Math.random() 获取0.0~0.1范围值【不包括1.0】
        //2.Math.random()*3000 得到范围：0.0~3000.0【不包括3000.0】
        // 范围值：0.0~2999.0
        //3.×3000范围，强转long类型 (long)(Math.random())
        //范围：0~2999     秒数：0~2
        //4.加1000     (long)(Math.random()*3000)+1000
        //  范围值：1~3秒
        try {
            Thread.sleep((long)(Math.random()*3000)+1000);

        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(dishName + " 准备完成  请享用");
    }

        public static void main (String[]args){
            Chef chef1 = new Chef("红烧肉");
            Chef chef2 = new Chef("鱼");
            Thread thread1 = new Thread(chef1);
            Thread thread2 = new Thread(chef2);
            thread1.start();
            thread2.start();
        }
    }
